package com.taotao.common.utils;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class HttpClientUtil {
	
	public static String doGet(String url,Map<String, String> param){
		
		CloseableHttpClient httpClient=HttpClients.createDefault();
		String result="";
		CloseableHttpResponse response=null;
		
		try {
			URIBuilder uriBuilder=new URIBuilder(url);
			if(param!=null){
				for(String key:param.keySet()){
					uriBuilder.addParameter(key, param.get(key));
				}
			}
			
			HttpGet get=new HttpGet(uriBuilder.build());
			response=httpClient.execute(get);
			HttpEntity entity=response.getEntity();
			if(response.getStatusLine().getStatusCode()==200){
				result=EntityUtils.toString(entity,"utf-8");
			}
			
		} catch (Exception e) {
			
			e.printStackTrace();
		}finally {
			try {
				if (response != null) {
					response.close();
				}
				httpClient.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		return result;
	}
	
	public static String doGet(String url){
		return doGet(url, null);
	}
	
	public static String doPost(String url,Map<String, String> param){
		CloseableHttpClient httpClient=HttpClients.createDefault();
		CloseableHttpResponse response=null;
		String result="";
		
		try {
			HttpPost post=new HttpPost(url);
			List<NameValuePair> kvList=new ArrayList<>();
			if(param!=null){
				for(String key:param.keySet()){	
					kvList.add(new BasicNameValuePair(key, param.get(key)));
				}
			}
			UrlEncodedFormEntity entity= new UrlEncodedFormEntity(kvList);
			post.setEntity(entity);
			response=httpClient.execute(post);
			result=EntityUtils.toString(entity,"utf-8");
		} catch (Exception e) {
			
			e.printStackTrace();
		}finally {
			try {
				if (response != null) {
					response.close();
				}
				httpClient.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		return result;
	}
	public static String doPost(String url){
		
		return doPost(url, null);
	}
}
